﻿Imports TransportadoraToledoDAL

Public Class ordemServicoBLL

#Region "Propriedades"
    Private os_codigo As Integer
    Public Property pOs_codigo() As Integer
        Get
            Return os_codigo
        End Get
        Set(ByVal value As Integer)
            os_codigo = value
        End Set
    End Property

    Private vei_codigo As Integer
    Public Property pVei_codigo() As Integer
        Get
            Return vei_codigo
        End Get
        Set(ByVal value As Integer)
            vei_codigo = value
        End Set
    End Property

    Private os_data As Date
    Public Property pOs_data() As Date
        Get
            Return os_data
        End Get
        Set(ByVal value As Date)
            os_data = value
        End Set
    End Property

    Private os_data_prevista As Date
    Public Property pOs_data_prevista() As Date
        Get
            Return os_data_prevista
        End Get
        Set(ByVal value As Date)
            os_data_prevista = value
        End Set
    End Property

    Private os_data_retorno As Date
    Public Property pOs_data_retorno() As Date
        Get
            Return os_data_retorno
        End Get
        Set(ByVal value As Date)
            os_data_retorno = value
        End Set
    End Property

    Private os_km As Double
    Public Property pOs_km() As Double
        Get
            Return os_km
        End Get
        Set(ByVal value As Double)
            os_km = value
        End Set
    End Property

    Private os_problema As String
    Public Property pOs_problema() As String
        Get
            Return os_problema
        End Get
        Set(ByVal value As String)
            os_problema = value
        End Set
    End Property

    Private os_real_problema As String
    Public Property pOs_real_problema() As String
        Get
            Return os_real_problema
        End Get
        Set(ByVal value As String)
            os_real_problema = value
        End Set
    End Property

    Private os_valor As Double
    Public Property pOs_valor() As Double
        Get
            Return os_valor
        End Get
        Set(ByVal value As Double)
            os_valor = value
        End Set
    End Property
#End Region

#Region "Construtores"
    Sub New()

    End Sub

    Sub New(os_codigo As Integer, vei_codigo As Integer, os_data As Date, os_data_prevista As Date, os_data_retorno As Date,
            os_km As Double, os_problema As String, os_real_problema As String, os_valor As Double)
        Me.os_codigo = os_codigo
        Me.vei_codigo = vei_codigo
        Me.os_data = os_data
        Me.os_data_prevista = os_data_prevista
        Me.os_data_retorno = os_data_retorno
        Me.os_km = os_km
        Me.os_problema = os_problema
        Me.os_real_problema = os_real_problema
        Me.os_valor = os_valor
    End Sub

#End Region

#Region "Métodos"

    Sub inserir()
        Dim objDAL As New ordemServicoDAL
        Try
            If (vei_codigo = 0) Then
                Throw New Exception("Escolha um veículo")
            ElseIf (os_data = Nothing) Then
                Throw New Exception("Defina a data de entrada da ordem de serviço")
            ElseIf (os_data_prevista = Nothing) Then
                Throw New Exception("Defina a data prevista para entrega do veículo")
            ElseIf (os_problema = "") Then
                Throw New Exception("Informe o problema que o carro apresenta")
            ElseIf (os_km = 0) Then
                Throw New Exception("Informe a kilometragem em que o carro se encontra")
            Else
                Me.os_codigo = objDAL.inserir(vei_codigo, os_data, os_data_prevista, os_data_retorno, os_km, os_problema, os_real_problema, os_valor)
            End If

        Catch ex As Exception
            Throw ex
        End Try
        objDAL = Nothing
    End Sub

    Sub alterar()
        Dim objDAL As New ordemServicoDAL
        Try
            If (vei_codigo = 0) Then
                Throw New Exception("Escolha um veículo")
            ElseIf (os_data = Nothing) Then
                Throw New Exception("Defina a data de entrada da ordem de serviço")
            ElseIf (os_data_prevista = Nothing) Then
                Throw New Exception("Defina a data prevista para entrega do veículo")
            ElseIf (os_data_retorno = Nothing) Then
                Throw New Exception("Defina a data de retorno do veículo")
            ElseIf (os_problema = Nothing) Then
                Throw New Exception("Informe o problema que o carro apresenta")
            ElseIf (os_real_problema = Nothing) Then
                Throw New Exception("Informe o real problema do carro")
            ElseIf (os_km = 0) Then
                Throw New Exception("Informe a kilometragem em que o carro se encontra")
            ElseIf (os_valor = 0) Then
                Throw New Exception("O valor da ordem de serviço deve ser maior que 0")
            Else
                objDAL.alterar(os_codigo, vei_codigo, os_data, os_data_prevista,
                               os_data_retorno, os_km, os_problema, os_real_problema, os_valor)
            End If
        Catch ex As Exception
            Throw ex
        End Try
        objDAL = Nothing
    End Sub

    Sub excluir()
        Dim objDAL As New ordemServicoDAL
        Try
            objDAL.excluir(os_codigo)
        Catch ex As Exception
            Throw ex
        End Try
        objDAL = Nothing
    End Sub

    Function localizarOrdemServico(ByVal descricao As String) As DataTable
        Dim tab As DataTable
        Dim objDAL = New ordemServicoDAL
        Try
            tab = objDAL.localizarOrdemServico(descricao)
            objDAL = Nothing
            Return tab
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Function localizar(ByVal codigo As Integer) As DataTable
        Dim tab As DataTable
        Dim objDAL = New ordemServicoDAL
        Try
            tab = objDAL.localizar(codigo)
            If (tab.Rows.Count > 0) Then
                Me.os_codigo = tab.Rows(0)(0).ToString
                Me.vei_codigo = tab.Rows(0)(1).ToString
                Me.os_data = tab.Rows(0)(2).ToString
                Me.os_data_prevista = tab.Rows(0)(3).ToString
                Me.os_data_retorno = tab.Rows(0)(4).ToString
                Me.os_km = tab.Rows(0)(5).ToString
                Me.os_problema = tab.Rows(0)(6).ToString
                Me.os_real_problema = tab.Rows(0)(7).ToString
                If (IsDBNull(tab.Rows(0)(8))) Then
                    Me.os_valor = 0
                Else
                    Me.os_valor = tab.Rows(0)(8)
                End If
            Else
                Throw New Exception("Não foram encontrados registros")
            End If
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Registro Inexistente")
        End Try
        objDAL = Nothing
        Return tab
    End Function

    'retorna todas as linhas pesquisadas da tabela
    Function localizarPrimeiroUltimo(ByVal nome As String) As Integer
        Dim tab As DataTable = Nothing
        Dim codigo As Integer = 0
        Dim objDAL As ordemServicoDAL

        Try
            If (nome = "ultimo") Then
                objDAL = New ordemServicoDAL
                tab = objDAL.localizar(nome)
                If (tab.Rows(0)("os_codigo").ToString <> "") Then
                    codigo = tab.Rows(0)("os_codigo").ToString
                End If
            ElseIf (nome = "primeiro") Then
                objDAL = New ordemServicoDAL
                tab = objDAL.localizar(nome)
                If (tab.Rows(0)("os_codigo").ToString <> "") Then
                    codigo = tab.Rows(0)("os_codigo").ToString
                End If
            End If
        Catch ex As Exception
            Throw ex
        End Try
        objDAL = Nothing
        Return codigo
    End Function

    Function localizarProxAnteriro(ByVal nome As String, ByVal codigo As Integer) As Integer
        Dim tab As DataTable = Nothing
        Dim CodigoP As Integer = 0
        Dim objDAL = New ordemServicoDAL
        Try
            tab = objDAL.localizarProxAnterior(nome, codigo)
            If (tab.Rows.Count > 0) Then
                CodigoP = tab.Rows(0)("os_codigo").ToString
            End If


        Catch ex As Exception
            Throw ex
        End Try
        objDAL = Nothing
        Return CodigoP
    End Function

#End Region

End Class
